// 示例 1：

// 输入：nums = [100, 4, 200, 1, 3, 2]
// 输出：4
// 解释：最长数字连续序列是[1, 2, 3, 4]。它的长度为 4。
// 示例 2：

// 输入：nums = [0, 3, 7, 2, 5, 8, 4, 6, 0, 1]
// 输出：9
// 示例 3：

// 输入：nums = [1, 0, 1, 2]
// 输出：3

nums = [100, 4, 200, 1, 3, 2]

// var longestConsecutive = function (nums) {
//     const set = new Set(nums); // 直接通过构造函数去重
//     let max = 0;

//     // 遍历去重后的 Set，而非原数组
//     for (const num of set) {
//         if (!set.has(num - 1)) { // 确认是起点
//             let current = num;
//             let count = 1;
//             while (set.has(current + 1)) {
//                 current++;
//                 count++;
//             }
//             max = Math.max(max, count);
//         }
//     }
//     return max;
// };

var longestConsecutive = function (nums) {
    const hashSet = new Set(nums);
    let max = 0

    for (let num of hashSet) {
        if (!hashSet.has(num - 1)) {
            let cur = num;
            let count = 1;
            while (hashSet.has(cur + 1)) {
                cur++;
                count++;
            }
            max = Math.max(max, count)
        }
    }
    return max
}

console.log(longestConsecutive(nums));
